// 通过 npm 安装 sdk npm install cos-nodejs-sdk-v5
// SECRETID 和 SECRETKEY 请登录 https://console.cloud.tencent.com/cam/capi 进行查看和管理
// nodejs 端可直接使用 CAM 密钥计算签名，建议用限制最小权限的子用户的 CAM 密钥
// 最小权限原则说明 https://cloud.tencent.com/document/product/436/38618
const COS = require('cos-nodejs-sdk-v5');
const cos = new COS({
  SecretId: 'AKIDRjnknleN1Tnw8GH8shPyR0jS8f9b4SrO', // 推荐使用环境变量获取；用户的 SecretId，建议使用子账号密钥，授权遵循最小权限指引，降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
  SecretKey: 'WpuoUilqsz0qZ7UekdJnHhuteIn6HG5i', // 推荐使用环境变量获取；用户的 SecretKey，建议使用子账号密钥，授权遵循最小权限指引，降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
});

const config = {
  // 需要替换成您自己的存储桶信息
  Bucket: 'cyz-1324904447', // 存储桶，必须
  Region: 'ap-beijing', // 存储桶所在地域，必须字段
};

// 调用图片ai审核接口
function getImageAuditing(key) {
  return new Promise((resolve, reject)=>{
    cos.request({
      Bucket: config.Bucket,
      Region: config.Region,
      Method: 'GET',
      Key: key,  // 存储桶内的图片文件，必须字段
      Query: {
        'ci-process': 'sensitive-content-recognition', // * 固定值，必须
        'biz-type': '', // * 审核类型，非必须
        'detect-url': '', // * 审核任意公网可访问的图片链接，非必须
        'interval': 5, // * 审核 GIF 动图时，每隔interval帧截取一帧，非必须
        'max-frames': 5, // * 审核 GIF 动图时，最大截帧数，非必须
        'large-image-detect': '0', // * 是否需要压缩图片后再审核，非必须
        'dataid': '123', // * 自定义图片标识，非必须
      },
    }, function (err, data) {
      if (err) {
        // 处理请求出错
        console.log(err);
        reject(err);
      } else {
        // 处理请求成功
        // console.log(data);
        const recognitionResult = data.RecognitionResult;
        // 提取审核结果
        const overallLabel = recognitionResult.Label; // 审核结果标签
        const forbidState = recognitionResult.ForbidState; // 禁止状态
        const pornHitFlag = recognitionResult.PornInfo.HitFlag; // 色情内容命中标识
        const politicsHitFlag = recognitionResult.PoliticsInfo.HitFlag; // 政治内容命中标识
        const adsHitFlag = recognitionResult.AdsInfo.HitFlag; // 广告内容命中标识
        const terrorismHitFlag = recognitionResult.TerrorismInfo.HitFlag; // 恐怖内容命中标识
        const state = recognitionResult.State; // 请求状态
        if (
          overallLabel === 'Normal' &&
          forbidState === '0' &&
          pornHitFlag === '0' &&
          politicsHitFlag === '0' &&
          adsHitFlag === '0' &&
          terrorismHitFlag === '0' &&
          state === 'Success'
        ) {
          console.log("图片通过验证，属于正常内容。");
          resolve(true); // 审核通过
        } else {
          console.log("图片未通过验证，有可能包含不当内容。");
          resolve(false); // 审核未通过
        }
      }
    });
  })
  
}



const fs = require('fs');
// 文件上传示例
const bucketName = 'cyz-1324904447'; // 替换为您的桶名称
const region = 'ap-beijing'; // 替换为您的桶所在区域，例：ap-guangzhou

// 上传要审核的图片
function uploadImage(filePath,fileName) {
  //const fileName = 'your_image_name.png'; // 上传到 COS 的文件名，可以更改为您想要的名称
  return new Promise((resolve, reject) => {
    try {
    cos.putObject({
      Bucket: bucketName,
      Region: region,
      Key: fileName,
      Body: fs.createReadStream(filePath) // 要上传的文件
    }, async (err, data) => {
      if (err) {
        console.error('上传失败', err);
        reject(err);
      } else {
        // console.log('上传成功', data);
       const res = await getImageAuditing(fileName)
       if (res) {
        resolve(true)
       }else {
        resolve(false)
       }
      }
    });
    } catch (error) {
    console.error('上传失败', err);
      }
  })
  
  
}

//封装删除图片
function deleteImage(fileName) {
  return new Promise((resolve, reject) => {
    cos.deleteObject({
      Bucket: bucketName,
      Region: region,
      Key: fileName
    }, (err, data) => {
      if (err) {
        console.error('删除失败', err);
        reject(err);
      } else {
        console.log('删除成功');
        resolve(true);
      }
    });
  });
}


// uploadImage('public/img/uploadFile-1733278912757.png','uploadFile-1733278912757.png')


module.exports = {getImageAuditing,uploadImage,deleteImage}